MySQL : différence entre DATETIME et TIMESTAMP
13 08 2010Quand on veut stocker une date/heure dans MySQL, on a le choix entre 2 types de champs :
- DATETIME
- TIMESTAMP
Il ne faut pas confondre le type TIMESTAMP de MySQL avec le timestamp UNIX utilisé par PHP, qui correspond au nombre de secondes écoulées depuis le 1 janvier 1970 (naissance d’UNIX).
En fait il y a peu de différence entre ces 2 formats.
DATETIME stocke la date sous le format YYYY-MM-DD HH:MM:SS.
Le format de TIMESTAMP change lui en fonction de la taille que vous avez choisit pour le champ. Par défaut, il choisit la taille maximale qui est de 14, le format est alors presque identique à DATETIME, les caractères séparateurs en moins (-, : et espace) : YYYYMMDDHHMMSS.
Mais si vous choisissez une taille inférieure, TIMESTAMP(8) par exemple, alors il stockera juste le jour, pas l’heure : YYYYMMDD.
Alors à première vue, TIMESTAMP ça a l’air d’être carrément plus le bordel que DATETIME, mais il y a un avantage à utiliser TIMESTAMP plutôt que DATETIME, c’est la valeur par défaut.
Pour un champ date, ça peut être pratique d’affecter comme valeur par défaut l’instant présent. Ça peut se faire avec un champ TIMESTAMP, auquel on peut mettre CURRENT_TIMESTAMP en valeur par défaut, alors que ça ne fonctionnera pas avec un DATETIME (erreur MySQL #1067 - Valeur par défaut invalide pour ‘date’).
Malheureusement, il n’est pas possible d’utiliser le résultat d’une fonction comme valeur par défaut (je pensais à NOW()).
Ce que vous avez lu ci-dessus est valable pour les version antérieures à MySQL 4.1 (sortie en 2004), pour les versions suivantes, le format de TIMESTAMP est identique à celui de DATETIME.
On ne lit vraiment que de la merde sur le forum hfr !
Hi there, everything is going nikcely heree and ofcourse every one is
sharing information, that’s actually excellent,
keep up writing.
Dear mrschnaps.com Administrator, same right here: Link Text
WbWN
WbWN),”))),’),